//showMyicon函数为配置配置菜单图标的函数，根据ZTree插件使用，ZTree插件中默认传入dom节点treeid和菜单节点数据treenode
//更改图标主要是更换图标class,换成自己数据库中存储的icon值
function showMyIcon(treeid,treeNode){
	//打印查看console.log(treeNode);
	//获取当前节点对象id
	var nodeid=treeNode.id;
	//获取新class值，数据库menu表中icon值
	var newclass=treeNode.icon;
	//获取目标节点span的domid
	var spanid=treeid+"_"+nodeid+"_ico";
	
	//替换目标span的class
	$("#"+spanid).removeClass().addClass(newclass).css("background","");
}

//初始菜单
function initMenu(){
	  	//菜单环境配置
		var setting = {	
	  			//更换节点图标
				"view": {
					"addDiyDom": showMyIcon,//自定义菜单图标函数
					"addHoverDom": addHoverDom,//鼠标移入时函数
					"removeHoverDom": removeHoverDom//鼠标移出时函数
				},
				//阻止节点挑战，
				"data": {
					"key": {
					"url": "notExistsProperty" // 阻止点击节点后跳转，本来url的值是menu实体类（即节点对象）中的"url"属性名，当点击此节点后，ztree会查找
							//在数据库中此属性对应的值作为路径进而挑战，若将url的值设为一个不存在的属性名则找不到，所以默认不跳转。
				}
		}
	  	};
		//菜单节点数据
		var zNodes =null;
		$.ajax({
			"url":"menu/get/rootnode.json",
			"type":"post",
			"dataType":"json",
			"success":function(req){
				var result=req.result;
				if(result=="SUCCESS"){
					zNodes=req.data;
					//菜单构成语句，在‘#treeDemo’处构成
					$.fn.zTree.init($("#treeDemo"), setting, zNodes);
				}else{
					 layer.msg("数据获取失败："+req.message+"!");//layer弹层组件
				}
				
			},
			"error":function(req){
				layer.msg("ajax连接失败："+req.message+"!");//layer弹层组件
			}
		});
}

//生成按钮组
function generateBtn(treeNode){
	//获取html节点id,HTML中li标签的id
	var domid = treeNode.tId;
	//节点id,便于点击按钮后传递ID进行增删改
	var menuId = treeNode.id;
	
	//组装按钮组span中的ID
	var btnGrpSpanId=domid+"_BtnGrp";
	//生成按钮组span,jq标签命名规则最好加上￥
	var $span=$("<span id='"+btnGrpSpanId+"'></span>");
	
	
	// 声明三种按钮
	var addBtn = "<a onclick='showAddModal(this)' id='"+menuId+"' class='btn btn-info dropdown-toggle btn-xs' style='margin-left:10px;padding-top:0px;' title='添加子节点'>&nbsp;&nbsp;<i class='fa fa-fw fa-plus rbg'></i></a>";
	var editBtn = "<a onclick='showEditModal(this)' id='"+menuId+"' class='btn btn-info dropdown-toggle btn-xs' style='margin-left:10px;padding-top:0px;' title='编辑节点'>&nbsp;&nbsp;<i class='fa fa-fw fa-edit rbg'></i></a>";
	var removeBtn = "<a onclick='removeNode(this)' id='"+menuId+"' class='btn btn-info dropdown-toggle btn-xs' style='margin-left:10px;padding-top:0px;' title='删除节点'>&nbsp;&nbsp;<i class='fa fa-fw fa-times rbg'></i></a>";
	
	//获取节点级别level，根据level组装不同的按钮组
	var level = treeNode.level;
	
	// 根据level进行判断
	if(level == 0) {//根节点不可删除
		$span.append(addBtn);
	}
	
	if(level == 1) {
		
		if(treeNode.children!=null && treeNode.children.length>0) {//节点拥有子节点时没有删除按钮
			
			$span.append(addBtn+" "+editBtn);
			
		} else {
			
			$span.append(addBtn+" "+editBtn+" "+removeBtn);
			
		}
		
	}
	
	if(level == 2) {//最多只有三级节点
		
		$span.append(editBtn+" "+removeBtn);
		
	}
	
	return $span;
}


//鼠标移入时出现按钮组,根据ZTree插件addHoverDom api进行编写
function  addHoverDom(treeId, treeNode){
	//在添加按钮组时进行判断，如已添加过的，则不再添加
	var span_id=treeNode.tId+"_BtnGrp";
	var btnlen=$("#"+span_id).length;
	if(btnlen>0)return;
	
	//1、获取目标html节点id（超链接处的id）
	var a_domid=treeNode.tId+"_a";

	//2、调用已封装函数生成按钮组
	var $btnGrpSpan = generateBtn(treeNode);
	
	//3、在超链接后生产按钮组
	$("#"+a_domid).after($btnGrpSpan);
}

//鼠标移出时，移除按钮组
function removeHoverDom(treeId, treeNode){
	//1、组装按钮组，获取按钮组所在span id
	var span_domid=treeNode.tId+"_BtnGrp";
	
	//2、移除
	$("#"+span_domid).remove();
}

//add添加节点
function showAddModal(crubtn){
	//将该按钮的id设为全局变量（id存的是当前节点的ID，要作为新节点的父节点）
	window.menuid=crubtn.id;
	//展示添加模态框
	$("#menuAddModal").modal("show");
}
//删除节点
function removeNode(crubtn){
	//获取节点id
	var del_menuid=crubtn.id;
	//ajax请求
	$.ajax({
		"url":"menu/remove.json",
		"type":"post",
		"data":{
			"menuid":del_menuid
			},
		"dataType":"json",
		"success":function(req){
			var result=req.result;
			if(result=="SUCCESS"){
				layer.msg("删除成功");
				//初始化界面
				initMenu();
			}else{
				layer.msg("删除失败："+req.message);
			}
		},
		"error":function(req){
			layer.msg("ajax删除请求连接失败");
		}
	});
}

//打开编辑模态框
function showEditModal(crubtn){
	window.menuid=crubtn.id;
	$.ajax({
		"url":"menu/get/Node.json?menuid="+window.menuid,
		"type":"get",//使用get则数据放在url
		/*"data":{
			"menuid":edit_id		
		},*/
		"dataType":"json",
		"success":function(req){
			var result=req.result;
			if(result=="SUCCESS"){
				var resultData=req.data;
				name=resultData.name;
				url=resultData.url;
				icon=resultData.icon;
				window.pid=resultData.pid;//父id
				//给各个input赋值
				$("#menuEditModal [name='name']").val(name);
			  	$("#menuEditModal [name='url']").val(url);
			  	//radio需要让value值和后端查询到的icon一致的设置为被选中
			  	var icon = $("#menuEditModal [name='icon'][value='"+icon+"']").attr("checked",true);
			  	$("#menuEditModal").modal("show");
			}else{
				layer.msg("打开模态框失败");
			}
		},
		"error":function(req){
			alert(req);
			layer.msg("ajax连接失败");
		}
	});
}
